package edu.面向对象基础;

import edu.面向对象基础.类.Student;

public class B_对象内存图 {
    //单个对象内存图
    /*
    main方法的测试类先进方法区，栈
    成员方法不会进入堆内存，但会在堆内存记录成员方法的地址
    learn-单个对象内存图.png
    */

    //两个对象内存图
    /*
    创建第二个对象，student的字节码文件（.class）不需要重新加载,会在堆内存中重新开辟空间
    多个对象使用的是同一份字节码文件（.class）,同一份的成员方法
    learn-两个对象内存图.png
    */

    //两个引用指向同一对象
   /*
   public static void main(String[] args) {
        Student stu1=new Student();
        stu1.name="阿强";
        Student stu2=stu1;  //把stu1的内存地址给了stu2,两者指向了同一内存地址
        stu2.name="阿珍";  //把阿强修改成了啊珍，阿强被覆盖掉
        System.out.println(stu1.name+",,,"+stu2.name);
        stu1=null;  //把内存地址设为空
        //System.out.println(stu1.name); 空指针异常，找不到内存地址
        //learn-两个引用指向同一对象.png
        stu2=null;//已经没有地址能找到堆内存中的数据，空闲时会被java垃圾回收器自动掉堆内存中数据

    }
    */

    //成员变量与局部变量
    /*
    成员变量：类中方法外的变量
    局部变量：方法中的变量
    */
}
